在這30天的文章中分享藉由在工作上學習資料庫管理相關的一些心得筆記與一些經驗分享和操作紀錄,希望能幫助到一些從頭接觸資料庫相關的人~
os.第一次跟著團隊一起參加鐵人賽,沒想到會有自己寫文章的一天XDDD 如果內容上有任何敘述時錯誤的地方或問題, 麻煩各位大大不吝指教。
這次的主題為MYSQL,使用的是Percona Server for MySQL,後面就直接用MYSQL稱呼。
關於Percona Server這邊簡單的介紹一下 :
1.屬於 Mysql 分支 (目前主流分支主要分為->Oracle官方版本的MySQL、Percona Server、MariaDB )。
2.免費、完全兼容、增強、開源的MYSQL數據庫替代品。
3.包括許多只在MYSQL商業企業版中可用的(擴展性、可用性、安全性和備份功能)。
4.優化、增強現有數據庫軟件,滿足大多數據庫應用程序工作負載需求。
另外後面會介紹到Percona的其他開源項目xtrabackup(數據庫備份)和Percona Monitoring and Management (管理和監控MySQL),方便資料庫管理者在遇到問題時,提供找問題判斷資料庫發生異常狀態時的時間點紀錄和數據操作的一個快速管道,大大的幫助管理者了解系統狀況喔。
資料庫管理系統-(database management system,簡稱 DBMS)
指的就是管理資料庫的軟體EX : MySQL , PostgreSQL , Microsoft SQL Server , Cassandra ...(講不完廢話略過!!
使用者 <-----溝通-----> 資料庫
簡單來說使用者能透過使用資料庫軟體建立自己的資料庫,達到存取所需資料以及管理資料庫的各項事務,使資料管理更加EASY。
Q: 所以該如何選擇? 用哪一套DB? 怎麼開始?
Ans: 不用懷疑會得到的答案為看使用情況。
評估一款適合用在生產環境的資料庫,牽扯的範圍很多,再加上每款資料庫都有不同的設計方式有各自的優缺點與適合的應用場景,最重要的日後如何維護與設計也是一大考量~
過程中還得經過基本的數據壓測相互比較,找到相對配置下的資料量到達一定值會出現的瓶頸點,經過一連串的各種考量評估才可能上線...(持續學習中嗯嗯
資料庫選擇<->生產環境上考量點
1.(商業邏輯層面)
要能上戰場在正式生產環境使用,首先要考量在邏輯設計上的資料應用,如何呈現功能與實現設計的目的。
2.(作業系統層面)
在不同的作業系統上如何調整與安裝使用。(EX:在原本環境上能正常執行的檔案換OS後沒辦法正常執行了)
3.(預算成本層面)
在現實考量下的機器部署方式與成本計算,如何將有限資源發揮到最佳CP值。
4.(維護營運層面)
考量在系統管理上如何維護與營運,包含資料上的維護與發生問題時如何即時修復保持生產環境安全運作。
5.(資料庫特性層面)
判斷業務型別資料是著重於什麼特性(EX:準確一制性or快速讀取可用性),資料量會隨著系統成長而增加,如何分散流量大時的工作負載量等。
遇到問題時,解決問題的方向
之前在讀文章時看到了一段話 : 在學習的路上,會看到許多不同的工具,但很多時候問題的重點不在於『哪個工具最好用』,而是我們要解決什麼問題。
套用在一開始的問題該如何選擇資料庫?
- 有了問題 -> 想一下要解決的問題是什麼
- 有了目標 -> 尋找有提供相關功能的工具
- 有了選擇 -> 去研究各個工具的使用方式
- 有了比較 -> 就能找出最合適解決的方式
30天的分享內容大致上為:
-
認識Mysql的基礎與一些架構內容
-
維運相關實務操作
-
系統監控狀況
目錄索引
- Day.1 起點 - 前言 ( Percona Server )
- Day.2 選擇 - 關聯式與非關聯式 (SQL vs. NoSQL )
- Day.3 環境部署 - 從安裝開始 (GCP & Percona Mysql )
- Day.4 針對使用者做管理 - 權限管理&資安 (Power)
- Day.5 留個紀錄好辦事 - Mysql Log (日誌紀錄)-上
- Day.6 留個紀錄好辦事 - Mysql Log (日誌紀錄)-下
- Day.7 保有日常備份重要性 - binlog 解析 &備份資料 (mysqldump / binlog)
- Day.8 備份還原 - 備份資料 (MYSQL binlog )-上
- Day.9 備份還原 - 還原資料 (MYSQL binlog )-下
- Day10 日誌管理工具 - Logrotate (Linux)
- Day.11 搞懂主從架構- 主從複製(Master Slave Replication)
- Day.12 主從搭建 - 部署流程(Master Slave Replication )
- Day.13 Crash Recovery - InnoDB 架構 -> MYSQL 二階段提交(2PC) _1
- Day.14 Crash Recovery- InnoDB 架構 -> MYSQL 二階段提交(2PC) _2
- Day.15 Crash Recovery- InnoDB 架構 -> MYSQL 二階段提交(2PC) _完
- Day.16 應用中學習- 資料庫操作 ( golang / sql )
- Day.17 應用中學習 - 實務操作資料庫寫入 ( golang / sql )
- Day.18 InnoDB資料儲存 - 主索引架構 (Clustered Index)
- Day.19 認識索引 - 二級索引 (Secondary Index)
- Day.20 從零開始 - 實務需求學SQL_1
- Day.21 從零開始 - 實務需求學SQL_2
- Day.22 SQL應用 - 表與表之間的連結 (JOIN)
- Day.23 分析語法效能必備 - MYSQL語法優化 ( Explain)
- Day.24 提升大數據資料管理 - 資料表分區 ( MYSQL Partition)
- Day.25 提升大數據資料管理 - 資料表分區 ( MYSQL Partition)_2
- Day.26 實務應用 - 實作表自動分區管理( event / procedure / partition )_1
- Day.27 實務應用 - 實作表自動分區管理( event / procedure / partition )_2
- Day.28 實務應用 - 實作表自動分區管理( event / procedure / partition )_END
- Day.29 部署環境 - 監控系統狀態(Percona Monitoring and Management)
- Day.30 維運必備輔助 - 系統監控(Percona Monitoring and Management)
明天開始進入我們的主題! 首先跟大家介紹SQL和NoSQL差異為何?分別有什麼特點?